package com.example;

import com.alibaba.fastjson.JSON;
import com.example.bean.JsonFirstObject;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.gson.Gson;

/**
 * @Author: fxbin
 * @Date: 2018/5/25 09:32
 * @Description:
 */
public class JSONTest {


    private static Gson gson = null;
    private static ObjectMapper mapper = null;

    static {
        gson = new Gson();
        mapper = new ObjectMapper();
    }


    public static void main(String[] args) {

        JsonFirstObject first = new JsonFirstObject();

        fastTest(first);
        gsonTest(first);
        jacksonTest(first);

    }

    static void fastTest(JsonFirstObject first){
        System.out.println("...fastJson...start...");

        long l = System.currentTimeMillis();
        for (int i = 0; i < 1000000 ; i++) {
            JSON.toJSON(first);
        }
        System.out.println("耗时"+ (System.currentTimeMillis()-l)+"毫秒");
        System.out.println("...fastJson...end...");
    }



    static void gsonTest(JsonFirstObject first){
        System.out.println("...gson...start...");
        long l = System.currentTimeMillis();
        for (int i = 0; i < 1000000 ; i++) {
            gson.toJson(first);
        }
        System.out.println("耗时"+ (System.currentTimeMillis()-l)+"毫秒");
        System.out.println("...gson...end...");

    }

    static void jacksonTest(JsonFirstObject first) {
        /**
         * ObjectMapper是JSON操作的核心，Jackson的所有JSON操作都是在ObjectMapper中实现。
         * ObjectMapper有多个JSON序列化的方法，可以把JSON字符串保存File、OutputStream等不同的介质中。
         * writeValue(File arg0, Object arg1)把arg1转成json序列，并保存到arg0文件中。
         * writeValue(OutputStream arg0, Object arg1)把arg1转成json序列，并保存到arg0输出流中。
         * writeValueAsBytes(Object arg0)把arg0转成json序列，并把结果输出成字节数组。
         * writeValueAsString(Object arg0)把arg0转成json序列，并把结果输出成字符串。
         */

        System.out.println("...jackson...start...");
        long l = System.currentTimeMillis();

        for (int i = 0; i < 1000000 ; i++) {
            try {
                mapper.writeValueAsString(first);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }
        }
        System.out.println("耗时"+ (System.currentTimeMillis()-l)+"毫秒");
        System.out.println("...jackson...end...");


    }






}    